﻿/*
 * Copyright (c) 2015 Thomas Hourdel
 *
 * This software is provided 'as-is', without any express or implied
 * warranty. In no event will the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 * 
 *    1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software. If you use this software
 *    in a product, an acknowledgment in the product documentation would be
 *    appreciated but is not required.
 * 
 *    2. Altered source versions must be plainly marked as such, and must not be
 *    misrepresented as being the original software.
 * 
 *    3. This notice may not be removed or altered from any source
 *    distribution.
 */

using UnityEngine;
using UnityEditor;
using Moments;

namespace MomentsEditor
{
	[CustomPropertyDrawer(typeof(MinAttribute))]
	internal sealed class MinDrawer : PropertyDrawer
	{
		public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
		{
			Moments.MinAttribute attribute = (MinAttribute)base.attribute;

			if (property.propertyType == SerializedPropertyType.Integer)
			{
				int v = EditorGUI.IntField(position, label, property.intValue);
				property.intValue = (int)Mathf.Max(v, attribute.min);
			}
			else if (property.propertyType == SerializedPropertyType.Float)
			{
				float v = EditorGUI.FloatField(position, label, property.floatValue);
				property.floatValue = Mathf.Max(v, attribute.min);
			}
			else
			{
				EditorGUI.LabelField(position, label.text, "Use Min with float or int.");
			}
		}
	}
}
